#ifndef COMBOSYSTEM_H
#define COMBOSYSTEM_H
#include "PlayerControl.h"
#include "Nest.h"
#include "stdafx.h"
#include <vector>
using namespace std;

class ComboSystem{
    private:

    struct KeyStroke: public sf::Sprite{
        PlayerControl::Controls m_key;  // a que tecla corresponde
        // si la tecleada no fue procesada, y si lo fue, si fue correcta o no
        enum Status{
            NONE,
            FAILED,
            CORRECT
        };
        Status m_status;
        KeyStroke();
    };

    bool m_active;
    Nest *m_nest;
    PlayerControl *m_control;
    sf::Vector2f m_bullsEyePos; // posicion de la mira
    vector<KeyStroke> m_keystrokes;
    float timeToNextKeystroke;

    sf::Sprite m_systemSprite;

	//sonidos
	Sound niceSound;
	Sound badSound;

    int GetNearest(); // devuelve la proxima keystroke que corresponde presionar

    ComboSystem();

    public:
    static ComboSystem *Instance();
    void Activate(PlayerControl *control);
    void Deactivate();
    void Update(float dt);
    void Draw(sf::RenderWindow *wnd);
    void IncrementDifficulty();
};

#endif // COMBOSYSTEM_H
